Data Files
Table of contents
built-in variables뿐만 아니라, Liquid templating system을 통해 접근할 수 있는 사용자정의 데이터를 지정할 수도 있습니다.
Jekyll 은 _data
디렉토리의 YAML 과 JSON, CSV, TSV 파일로부터 데이터 로딩을 지원한다. 단, CSV 와 TSV 파일에는 반드시 header row가 있어야 합니다.
이 강력한 기능 덕분에 템플릿에서 반복을 피할 수 있고, _config.yml
파일을 수정하지 않고도 사이트 지정 옵션을 설정할 수 있습니다.
플러그인/테마에서도 데이터 파일을 사용하여 환경설정 변수를 설정할 수 있습니다.
Data Folder
_data 폴더는 사이트를 생성할 때 사용하는 부가적인 데이터를 저장하는 공간입니다. 이 파일들은 반드시 YAML 이나 JSON, CSV 파일 (확장자가 .yml
, .yaml
이나 .json
, .csv
) 이어야 하며, site.data 를 통해 이 데이터를 사용할 수 있습니다.
예제: List of members
커다란 코드 뭉치를 여러 Jekyll 템플릿에 복사-붙여넣기하지 않기 위해 데이터 파일을 활용하는 기본적인 예제입니다:
_data/members.yml
예시:
- name: Eric Mill
github: konklone
- name: Parker Moore
github: parkr
- name: Liu Fengyun
github: liufengyun
또는 _data/members.csv
예시:
name,github
Eric Mill,konklone
Parker Moore,parkr
Liu Fengyun,liufengyun
site.data.members
로 (파일명이 변수 이름으로 사용되는 것에 주목) 이 데이터에 접근할 수 있습니다.
이제 템플릿에 멤버들 목록을 출력할 수 있습니다:
<ul>
{% for member in site.data.members %}
<li>
<a href="https://github.com/{{ member.github }}">
{{ member.name }}
</a>
</li>
{% endfor %}
</ul>
Subfolders
_data
의 하위 폴더에도 데이터 파일을 저장할 수 있습니다. 각 단계의 폴더 이름이 변수의 네임스페이스에 영향을 줍니다. 아래 예시에서는 여러 GitHub 단체들의 정보를 별도의 파일로 각각 분리하여 orgs
폴더 안에 정의하는 방법을 보여주고 있습니다:
_data/orgs/jekyll.yml
파일:
username: jekyll
name: Jekyll
members:
- name: Tom Preston-Werner
github: mojombo
- name: Parker Moore
github: parkr
_data/orgs/doeorg.yml
파일:
username: doeorg
name: Doe Org
members:
- name: John Doe
github: jdoe
이제 site.data.orgs
뒤에 파일명을 사용하면, 단체 정보에 접근할 수 있습니다:
<ul>
{% for org_hash in site.data.orgs %}
{% assign org = org_hash[1] %}
<li>
<a href="https://github.com/{{ org.username }}">
{{ org.name }}
</a>
({{ org.members | size }} members)
</li>
{% endfor %}
</ul>
예제: author 접근
페이지나 포스트는 특정 데이터를 사용할 수 있습니다. 아래 예제는 특정 정보에 접근하는 방법을 보여줍니다:
_data/people.yml
:
dave:
name: David Smith
twitter: DavidSilvaSmith
이제 포스트의 front matter에서 author는 페이지 변수로 지정될 수 있습니다:
---
title: sample post
author: dave
---
{% assign author = site.data.people[page.author] %}
<a rel="author"
href="https://twitter.com/{{ author.twitter }}"
title="{{ author.name }}">
{{ author.name }}
</a>
당신의 사이트에 어울리는 탄탄한 탐색기능 구축방법에 대해서는(특히 구축해야할 많은 페이지를 가진 documentation website, 다른 타입의 Jekyll site 경우), 탐색을 살펴보세요.